package com.hjr.calculator;

import java.math.BigDecimal;

/**
 * 一个支持undo和redo操作的简易计算器
 * 可以实现两个数的加、减、乘、除运算，并可以进行undo和redo操作
 * 计算结果精度可配置，默认保留2位小数且四舍五入。具体配置见 @see CalcConstant
 *
 * @author 何健荣 email:1018010051@qq.com
 * @Date  2023-11-26
 *
 */
public interface ICalculator {


    /**
     * 接收字符，并返回计算结果。若本次未计算完成，返回上次计算结果。
     *
     * @param str 数字或计算符，计算符号支持+-* /=
     * @return 计算结果精度可配置，默认保留2位小数且四舍五入。具体配置见 @see CalcConstant
     */
    BigDecimal exec(String str);

    /**
     * 重放计算
     *
     * @return 计算结果精度可配置，默认保留2位小数且四舍五入。具体配置见 @see CalcConstant
     */
    BigDecimal redo();

    /**
     * 撤销上次计算结果
     *
     * @return 计算结果精度可配置，默认保留2位小数且四舍五入。具体配置见 @see CalcConstant
     */
    BigDecimal undo();
}
